package br.com.dani3lviana.loja.controller;

import java.util.List;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Validations;
import br.com.dani3lviana.loja.dao.ProdutoDAO;
import br.com.dani3lviana.loja.modelo.Produto;

@Resource
public class ProdutosController {
	private final ProdutoDAO dao;
	private final Result result;
	private final Validator validator;
	
	public ProdutosController(ProdutoDAO dao, Result result, Validator validator){
		this.dao = dao;
		this.result = result;
		this.validator = validator;
	}
	
	public Produto edit(Long id){
		return dao.load(id);
	}
	
	//@Path("/produtos")
	public List<Produto> findAll(){
		return dao.findAll();
	}
	
	public void save(final Produto produto){
		validateProduto(produto);
		
		dao.save(produto);
		result.redirectTo(this).findAll();
	}

	private void validateProduto(Produto produto) {
		validator.validate(produto);
		validator.onErrorUsePageOf(ProdutosController.class).formulario();
	}
	
	public void update(Produto produto){
		validateProduto(produto);
		
		dao.update(produto);
		result.redirectTo(this).findAll();
	}
	
	public void delete(Long id){
		dao.delete(dao.load(id));
		result.redirectTo(this).findAll();
	}
	
	public void formulario(){
	}
}
